"""
学生成绩统计：平均分，最高分，最低分，及格人数
"""

class ScorePlatform:

    # 定义成员变量：记录要录入几个学生的成绩
    def __init__(self, num, scores):
        """初始化方法

            Args:
                student_num: 学生数量（int）
                scores: 成绩列表（list[int]）

        """
        self.num = num    # 学生数量
        self.scores = scores # 成绩列表

    # 平均分
    def average(self):
        return sum(self.scores) / self.num

    # 最高分
    def highest(self):
        return max(self.scores)

    # 最低分
    def lowest(self):
        return min(self.scores)

    # 及格人数
    def pass_count(self):
        return sum(1 for score in self.scores if score >= 60)



# 运行
if __name__ == '__main__' :
    # 1.无限循环，直到输入正确的学生数量
    while True:
        try:
            num = int(input("请输入学生的数量（正整数）:"))    # 用户输入学生人数
            # 如果学生人数是0或负数，继续try直至学生人数为正数。
            if num <= 0:
                print("学生人数格式错误")
                continue
            break
        # 如果学生人数不是数字，捕获异常
        except ValueError:
            print("输入无效，请输入数字！")

    # 2.用户输入成绩（数字检验和范围检验）
    scores = []
    for i in range(num):
        # 每输入一次成绩就无限循环直至输入正确的数字
        while True:
            try:
                score = int(input(f"请输入第{i + 1}个学生的成绩:"))
                if 0 <= score <= 100:
                    scores.append(score)
                    break
                else:
                    print("请输入0-100范围的数字")
            except ValueError:
                print("输入无效，请输入数字！")

    # 3.初始化平台
    score_platform = ScorePlatform(num, scores)

    # 执行统计
    avg = score_platform.average()
    highest = score_platform.highest()
    lowest = score_platform.lowest()
    pass_num = score_platform.pass_count()

    # 输出结果
    print(f"\n📊 统计结果：")
    print(f"平均分：{avg:.1f}分")
    print(f"最高分：{highest}分")
    print(f"最低分：{lowest}分")
    print(f"及格人数：{pass_num}人（共{num}人）")